package com.example.day05;

/**
 *  * 1. 对所有的静态的属性分配空间以及初始化
 *  *
 *  * 2. 对所有的静态的方法分配空间以及初始化
 *  *
 *  * 3. 调用静态代码块
 *  *
 *  * 4. 如果遇到创建对象
 *  *
 *  *    4-1. 给所有的非静态的属性分配空间以及初始化
 *  *
 *  *    4-2. 给所有的非静态的方法分配空间以及初始化
 *  *
 *  *    4-3. 调用普通代码块
 *  *
 *  *    4-4. 调用构造块
 */

                                  //后面标 的是 执行次序
public class Animal {

    public int id = 1;                               // 3

    //普通代码块 - 只要new - 遇到创建对象                4
    {
        System.out.println("普通代码块-id:"+id);
        System.out.println("普通代码块-sid:"+sid);
    }
    public static int sid=100;       //1

    //构造块
    public  Animal(){                  //5
        System.out.println("构造块-id:"+id);
        System.out.println("构造块-sid:"+sid);
    }

    public static void test(){
        System.out.println("sid:"+sid);
    }

    //静态代码块
    static{
        System.out.println("静态代码块-sid:"+sid);          //2
    }
//main启动 先加载静态
    public static void main(String[] args) {
        Animal load1 = new  Animal();
       Animal load2 = new  Animal();
    }
}
